/**
 * 主应用程序入口点
 */

// 等待DOM加载完成
document.addEventListener('DOMContentLoaded', () => {
    // 初始化UI
    uiManager.renderChat();
    uiManager.renderControls();
    
    console.log('Agentic Jira前端已初始化');
});

/**
 * 全局函数发送消息（从UI调用）
 */
window.sendMessage = async function() {
    const message = uiManager.elements.userInput.value.trim();
    
    if (!message) return;
    
    try {
        // 在UI中添加用户消息
        uiManager.addMessage(message, "user");
        uiManager.elements.userInput.value = '';
        
        // 处理过程中禁用输入
        uiManager.toggleInput(true);
        uiManager.updateSystemStatus("处理中...");
        uiManager.updateLastAction("发送消息");
        
        // 向后端发送消息
        const response = await apiClient.sendMessage(message);
        
        // 在UI中添加代理响应
        uiManager.addMessage(response.message, "agent");
        
        // 更新状态
        uiManager.updateSystemStatus("就绪");
        uiManager.updateLastAction("消息已处理");
        
    } catch (error) {
        uiManager.addMessage(`错误: ${error.message}`, "system");
        uiManager.updateSystemStatus("发生错误");
        uiManager.updateLastAction("错误");
    } finally {
        // 重新启用输入
        uiManager.toggleInput(false);
        uiManager.elements.userInput.focus();
    }
};

/**
 * 全局函数测试MCP连接
 */
window.testMcpConnection = async function() {
    try {
        uiManager.addMessage("正在测试MCP连接...", "system");
        uiManager.updateConnectionStatus("processing", "测试连接中...");
        uiManager.updateSystemStatus("测试MCP连接...");
        uiManager.updateLastAction("测试MCP连接");
        
        const response = await apiClient.testMcpConnection();
        
        uiManager.addMessage(response.message, "system");
        uiManager.updateConnectionStatus("connected");
        uiManager.updateSystemStatus("就绪");
        uiManager.updateLastAction("MCP测试完成");
        
        // 如果提供了可用工具则显示
        if (response.tools && response.tools.length > 0) {
            let toolsMessage = "可用工具:\n";
            response.tools.forEach(tool => {
                toolsMessage += `- ${tool.name}: ${tool.description}\n`;
            });
            uiManager.addMessage(toolsMessage, "system");
        }
        
    } catch (error) {
        uiManager.addMessage(`错误: ${error.message}`, "system");
        uiManager.updateConnectionStatus("disconnected", "连接失败");
        uiManager.updateSystemStatus("发生错误");
        uiManager.updateLastAction("MCP测试失败");
    }
};

/**
 * 全局函数清除对话
 */
window.clearConversation = async function() {
    try {
        uiManager.updateSystemStatus("清除对话...");
        uiManager.updateLastAction("清除对话");
        
        // 清除消息区域但保留欢迎消息
        if (uiManager.elements.messagesArea) {
            uiManager.elements.messagesArea.innerHTML = '';
            uiManager.addMessage("欢迎使用Agentic Jira会议系统！今天我能帮您做什么？", "agent");
        }
        
        const response = await apiClient.clearConversation();
        console.log(response.message);
        
        uiManager.updateSystemStatus("就绪");
        uiManager.updateLastAction("对话已清除");
        
    } catch (error) {
        uiManager.addMessage(`错误: ${error.message}`, "system");
        uiManager.updateSystemStatus("发生错误");
        uiManager.updateLastAction("清除失败");
    }
};

/**
 * 全局函数退出应用程序
 */
window.exitApplication = async function() {
    if (confirm('您确定要退出应用程序吗？')) {
        try {
            uiManager.updateSystemStatus("退出应用程序...");
            uiManager.updateLastAction("退出应用程序");
            
            const response = await apiClient.exitApplication();
            console.log(response.message);
            
            uiManager.addMessage("应用程序正在关闭。您可以关闭此浏览器选项卡。", "system");
            uiManager.toggleInput(true);
            uiManager.updateSystemStatus("应用程序已退出");
            uiManager.updateLastAction("应用程序已退出");
            
        } catch (error) {
            uiManager.addMessage(`错误: ${error.message}`, "system");
            uiManager.updateSystemStatus("发生错误");
            uiManager.updateLastAction("退出失败");
        }
    }
};